// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "GameFramework/WorldSettings.h"
#include "LyraWorldSettings.generated.h"

#define UE_API LYRAGAME_API

class ULyraExperienceDefinition; // 前向声明

/**
 * 默认世界设置对象，主要用于设置在此地图上播放时要使用的默认游戏玩法经验
 */
UCLASS(MinimalAPI)
class ALyraWorldSettings : public AWorldSettings
{
	GENERATED_BODY()

public:

	UE_API ALyraWorldSettings(const FObjectInitializer& ObjectInitializer); // 构造函数

#if WITH_EDITOR
	UE_API virtual void CheckForErrors() override; // 检查错误
#endif

public:
	// 返回服务器打开此地图时使用的默认经验，如果未被用户面向经验覆盖
	UE_API FPrimaryAssetId GetDefaultGameplayExperience() const; // 获取默认游戏玩法经验

protected:
	// 服务器打开此地图时使用的默认经验，如果未被用户面向经验覆盖
	UPROPERTY(EditDefaultsOnly, Category=GameMode)
	TSoftClassPtr<ULyraExperienceDefinition> DefaultGameplayExperience; // 默认游戏玩法经验

public:

#if WITH_EDITORONLY_DATA
	// 此关卡是否是前端或其他独立经验的一部分？
	// 设置后，在编辑器中点击播放时，网络模式将强制为Standalone
	UPROPERTY(EditDefaultsOnly, Category=PIE)
	bool ForceStandaloneNetMode = false; // 强制独立网络模式
#endif
};

#undef UE_API